package com.sky.filter;

import com.sky.context.EmployeeContext;
import org.springframework.stereotype.Component;

import javax.servlet.*;
import java.io.IOException;

/**
 * 用户上下文过滤器
 * 用于在请求处理完成后清理用户上下文信息，防止内存泄漏
 */
@Component
public class EmployeeContextFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        try {
            // 继续执行过滤器链中的下一个过滤器或目标资源
            chain.doFilter(request, response);
        } finally {
            // 请求处理完成后，清理用户上下文中的数据
            // 使用finally确保无论请求处理成功与否都会执行清理操作
            EmployeeContext.remove();
        }
    }
}